﻿Imports System.Windows.Forms
Imports Testeitor.Entidades
Imports Testeitor.DAO

Public Class DialogTest
    Dim _operacion As Util.Operacion
    Dim _test As TestEntity

    Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click

        If validarDatos() Then
            Dim dao As New TestDAO
            Select Case _operacion
                Case Util.Operacion.GUARDAR
                    _test = New TestEntity
                    cargarEntidad()
                    dao.Insertar(_test)
                    Util.mensaje("El Test de Prueba se ha guardado correctamente!", "Test de Prueba Guardado")
                Case Util.Operacion.MODIFICAR
                    cargarEntidad()
                    Util.mensaje("El Test de Prueba se ha guardado correctamente!", "Test de Prueba Guardado")
                Case Util.Operacion.ELIMINAR
                    dao.Eliminar(_test.Id)
                    Util.mensaje("El Test de Prueba se ha eliminado correctamente!", "Test de Prueba Guardado")
            End Select

            Me.DialogResult = System.Windows.Forms.DialogResult.OK
            Me.Close()
        Else
            MessageBox.Show("El formato de los Datos ingresados es incorrecto", "Datos Incorrectos", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If
    End Sub

    Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
        Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
        Me.Close()
    End Sub

    Private Function validarDatos() As Boolean
        Dim valor As Boolean
        valor = True
        'Revisar las validaciones necesarias
        If False Then
            valor = False
        End If

        Return valor
    End Function

    Public Sub cargarDatos(ByVal entidad As EntityBase)
        _test = DirectCast(entidad, TestEntity)

        txtTitulo.Text = _test.Titulo
        dtpFechaCreacion.Text = _test.FechaCreacion
        cmbAutor.SelectedValue = _test.Autor
        txtDescripcion.Text = _test.Descripcion
        cmbTester.SelectedValue = _test.Tester
        cmbEstado.SelectedValue = _test.Estado
        cmbPrioridad.SelectedValue = _test.Prioridad
        rtxtPasos.Text = _test.Pasos
        rtxtResultados.Text = _test.ResultadosEsperados

        If _operacion.Equals(Util.Operacion.ELIMINAR) Then
            habilitarControles(False)
        End If
    End Sub

    Private Sub habilitarControles(ByVal valor As Boolean)
        txtTitulo.Enabled = valor
        dtpFechaCreacion.Enabled = valor
        cmbAutor.Enabled = valor
        txtDescripcion.Enabled = valor
        cmbTester.Enabled = valor
        cmbEstado.Enabled = valor
        cmbPrioridad.Enabled = valor
        rtxtPasos.Enabled = valor
        rtxtResultados.Enabled = valor
    End Sub

    Private Sub cargarEntidad()
        _test.Titulo = txtTitulo.Text
        _test.FechaCreacion = Convert.ToDateTime(dtpFechaCreacion.Text)
        _test.Autor = cmbAutor.SelectedValue
        _test.Descripcion = txtDescripcion.Text
        _test.Tester = cmbTester.SelectedValue
        _test.Estado = cmbEstado.SelectedValue
        _test.Prioridad = cmbPrioridad.SelectedValue
        _test.Pasos = rtxtPasos.Text
        _test.ResultadosEsperados = rtxtResultados.Text
    End Sub

    Private Sub DialogTest_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        CargarComboAutor()
        CargarComboCasoDeUso()
        CargarComboTester()
        CargarComboEstado()
        CargarComboPrioridad()
    End Sub

    Private Sub CargarComboAutor()
        Dim dao As New UsuarioDAO
        Util.cargarComboEntity(cmbAutor, dao.SeleccionarTodas)
    End Sub

    Private Sub CargarComboCasoDeUso()
        Dim dao As New CasoDeUsoDAO
        'seleccionar solo los casos de uso del proyecto
        Util.cargarComboEntity(cmbCasoDeUso, dao.SeleccionarTodas)
    End Sub

    Private Sub CargarComboTester()
        Dim dao As New UsuarioDAO
        Util.cargarComboEntity(cmbTester, dao.SeleccionarTodas)
    End Sub

    Private Sub CargarComboEstado()
        Dim dao As New EstadoDAO
        Util.cargarComboEntity(cmbEstado, dao.SeleccionarTodas)
    End Sub

    Private Sub CargarComboPrioridad()
        Util.EnlazarEnumeracionPrioridad(cmbPrioridad)
    End Sub
End Class
